package com.ecommerce.dddmodules.shippingcontext.service;

import com.ecommerce.dddmodules.sharedkernel.service.ApplicationService;
import com.ecommerce.dddmodules.shippingcontext.model.Parcel;
import com.ecommerce.dddmodules.shippingcontext.repository.ShippingOrderRepository;

import java.util.Optional;
/**
 * @packageName: shippingcontext.service（发货上下文.服务包）
 * @className: ShippingService(发货服务接口)
 * @description: 扩展应用服务接口
 * @author: luds
 * @version: v1.0
 * @date: 2021-04/02
 */
public interface ShippingService extends ApplicationService {
	/**
	 * 根据订单ID进行发货
	 * @param orderId 订单ID
	 */
	void shipOrder(int orderId);

	/**
	 * 监听订购事件
	 */
	void listenToOrderEvents();

	/**
	 * 根据订单ID获取包裹信息
	 * @param orderId 订单ID
	 * @return 返回包裹信息
	 */
	Optional<Parcel> getParcelByOrderId(int orderId);

	/**
	 * 设置订单存储库
	 * @param orderRepository 订单存储库
	 */
	void setOrderRepository(ShippingOrderRepository orderRepository);
}
